Non-Volatile Memory (NVM), such as NAND flash memory, is a very popular storage medium because it allows data to be stored for some length of time. The ability to store data has enabled the information age and prompt, reliable, access to this data is one of the reasons why solid-state drives (SSDs) have become so popular in recent years. Also, Solid-state drives (SSDs) that are built using NAND flash memory are becoming more and more common as their prices decrease.
NAND flash memory, however, is not particularity reliable as a storage medium because NAND flash memory often suffers from errors. Historically, NAND flash memory suffers from two classes of errors: (1) small scale errors; and (2) large scale errors. Small scale errors add Raw Bit Error Rate (RBER) to the data stored on a storage medium. Large Scale errors comprise gross defects causing large sections of the data to be in error or erased.
For NAND flash memory, a well-known large-scale (or gross) defect is a “die-kill”. A “die-kill” occurs when an entire die of the NAND flash memory becomes inoperable. All data on that die, which can be as much as 128 Gb, may be lost. A common cause of a die-kill is a charge pump failure in the circuitry of the NAND flash memory. The probability of “die kill” error is estimated to be a few parts per million (PPM).
Because NVMs are never error free, to ensure data that is stored on the NVM is reliably protected, a NVM controller must implement a robust error correcting code (EEC) method. As errors can be small scale and/or large scale, it is advantageous to utilize a combination of ECC methods to protect against both small scale and large scale errors.
Improvements ECCs for NVMs are therefore desirable.